package br.com.threads.entendendo;

import java.awt.Color;

import javax.swing.JPanel;

public class Cruzamento extends Thread{
	public Semaforo norteSul, sulNorte, lesteOeste,oesteLeste;
	private int tempo, tempoInicial;
	
	//construtor
	public Cruzamento(JPanel canvas){
		norteSul = new Semaforo(canvas, Color.GREEN,202, 123);
		sulNorte = new Semaforo(canvas, Color.GREEN, 402,298);
		lesteOeste = new Semaforo(canvas, Color.RED, 402, 123);
		oesteLeste = new Semaforo(canvas, Color.RED, 202, 298);
		norteSul.draw();
		sulNorte.draw();
		lesteOeste.draw();
		oesteLeste.draw();
	}
	//metodo que verifica a cor atual do semaforo e realiza a alteracao da mesma
	public void mudar(){
		if(norteSul.getColor() == Color.GREEN){
			norteSul.mudarCores();//metodo mudarCores da classe Semaforo
			sulNorte.mudarCores();
		}else if(lesteOeste.getColor() == Color.GREEN){
			lesteOeste.mudarCores();
			oesteLeste.mudarCores();
		}else if(norteSul.getColor() == Color.YELLOW){
			norteSul.mudarCores();
			sulNorte.mudarCores();
			lesteOeste.mudarCores();
			oesteLeste.mudarCores();
		}else if(lesteOeste.getColor() == Color.YELLOW){
			norteSul.mudarCores();
			sulNorte.mudarCores();
			lesteOeste.mudarCores();
			oesteLeste.mudarCores();
		}
	}
	//metodo run da classe Thread que inicia a execucao das Threads
	public void run(){
		try{
			for(int i = 0; i <= 100; ){
				if(this.lesteOeste.getColor() == Color.GREEN || 
						this.norteSul.getColor()== Color.GREEN){
					this.mudar();
					sleep(1000);
				}else{
					this.mudar();
					sleep(4000);
				}
			}
		}catch(InterruptedException e){
			e.getCause();
		}
	}
}
